package br.com.almanach.cadastro;

import br.com.almanach.dominio.cadastro.Musica;
import br.com.almanach.jsf.JSFUtil;
import br.com.almanach.jsf.Pagina;
import br.com.almanach.negocio.cadastro.MusicaNegocio;
import br.com.almanach.padrao.Configuracao;
import br.com.almanach.padrao.Editar;
import br.com.almanach.util.FileUtil;
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.UUID;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;

@ManagedBean(name="editarMusica")
@ViewScoped
public class EditarMusica extends Editar implements Serializable {

    @EJB
    private MusicaNegocio musicaNegocio;

    private Musica objeto;

    @PostConstruct
    public void construtor(){
        String id = JSFUtil.getParametro("id");
        if(id!=null){
            objeto = musicaNegocio.buscar(new Integer(id));
        }        
    }

    @Override
    public String salvar() {
        File arquivo = new File( Configuracao.CAMINHO_MUSICA_IMAGEM + Configuracao.ARQUIVO_MUSICA_IMAGEM );
        if(arquivo.exists()){
            String nome = UUID.randomUUID().toString();
            if(arquivo.renameTo(new File( Configuracao.CAMINHO_MUSICA_IMAGEM + nome + Configuracao.SUFIXO_MUSICA_IMAGEM ))){
                this.objeto.setImagem(nome);
            }
        }
        if(this.objeto.getId()==null){            
            musicaNegocio.incluir(this.objeto);
        }else{
            musicaNegocio.alterar(this.objeto);
        }
        return Pagina.LISTAR_MUSICA_REDIRECIONAR;
    }

    
    public void setMusicaNegocio(MusicaNegocio musicaNegocio) {
        this.musicaNegocio = musicaNegocio;
    }

    public Musica getObjeto() {
        if(objeto==null){
            objeto = new Musica();
        }
        return objeto;
    }

    public void setObjeto(Musica objeto) {
        this.objeto = objeto;
    }

    public void upload(FileUploadEvent evento) {
        try {            
            UploadedFile file = evento.getFile();
            FileUtil.writeToFile(Configuracao.RECURSO_IMAGEM + Configuracao.ARQUIVO_MUSICA_IMAGEM, file.getInputstream());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public String voltar(){
        return Pagina.LISTAR_MUSICA_ENCAMINHAR;
    }
 
}